home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / etc / init.d / clock < prev    next >
Text File  |  2006-04-25  |  2KB  |  132 lines

  1. #!/sbin/runscript
  2. # Copyright 1999-2005 Gentoo Foundation
  3. # Distributed under the terms of the GNU General Public License v2
  4.  
  5. opts="save"
  6.  
  7. depend() {
  8.     need localmount
  9. }
  10.  
  11. setupopts() {
  12.     if is_uml_sys ; then
  13.         TBLURB="UML"
  14.         fakeit=1
  15.     elif is_vserver_sys ; then
  16.         TBLURB="VServer"
  17.         fakeit=1
  18.     elif is_xenU_sys ; then
  19.         TBLURB="xen"
  20.         fakeit=1
  21.     elif grep -q ' cobd$' /proc/devices ; then
  22.         TBLURB="coLinux"
  23.         fakeit=1
  24.     elif [[ ${CLOCK} == "UTC" ]] ; then
  25.         myopts="--utc"
  26.         TBLURB="UTC"
  27.     else
  28.         myopts="--localtime"
  29.         TBLURB="Local Time"
  30.     fi
  31.     [[ ${fakeit} -eq 1 ]] && return 0
  32.  
  33.     if [[ ${readonly} == "yes" ]] ; then
  34.         myadj="--noadjfile"
  35.     else
  36.         myadj="--adjust"
  37.     fi
  38.  
  39.     if [[ ${SRM} == "yes" ]] ; then
  40.         myopts="${myopts} --srm"
  41.     fi
  42.     if [[ ${ARC} == "arc" ]] ; then
  43.         myopts="${myopts} --arc"
  44.     fi
  45.     myopts="${myopts} ${CLOCK_OPTS}"
  46.  
  47.     # Make sure user isn't using rc.conf anymore.
  48.     if grep -qs ^CLOCK= /etc/rc.conf ; then
  49.         ewarn "CLOCK should not be set in /etc/rc.conf but in /etc/conf.d/clock"
  50.     fi
  51. }
  52.  
  53. start() {
  54.     local myopts=""
  55.     local myadj=""
  56.     local TBLURB="" fakeit=0
  57.     local errstr=""
  58.     local readonly="no"
  59.     local ret=0
  60.  
  61.     if ! touch /etc/adjtime 2>/dev/null ; then
  62.         readonly="yes"
  63.     elif [[ ! -s /etc/adjtime ]] ; then
  64.         echo "0.0 0 0.0" > /etc/adjtime
  65.     fi
  66.  
  67.     setupopts
  68.  
  69.     ebegin "Setting system clock using the hardware clock [${TBLURB}]"
  70.     if [[ ${fakeit} -eq 1 ]] ; then
  71.         ret=0
  72.  
  73.     elif [[ -x /sbin/hwclock ]] ; then
  74.         # Since hwclock always exit's with a 0, need to check its output.
  75.         errstr=$(/sbin/hwclock ${myadj} ${myopts} 2>&1 >/dev/null)
  76.         errstr="${errstr}$(/sbin/hwclock --hctosys ${myopts} 2>&1 >/dev/null)"
  77.  
  78.         if [[ -n ${errstr} ]] ; then
  79.             ewarn "${errstr}"
  80.             ret=1
  81.         else
  82.             ret=0
  83.         fi
  84.         errstr="Failed to set system clock to hardware clock"
  85.     else
  86.         ret=1
  87.         errstr="/sbin/hwclock not found"
  88.     fi
  89.     eend ${ret} "${errstr}"
  90. }
  91.  
  92. stop() {
  93.     # Don't tweak the hardware clock on LiveCD halt.
  94.     [[ -n ${CDBOOT} ]] && return 0
  95.  
  96.     [[ ${CLOCK_SYSTOHC} != "yes" ]] && return 0
  97.  
  98.     local myopts=""
  99.     local TBLURB=""
  100.     local errstr=""
  101.     local ret=0
  102.  
  103.     setupopts
  104.  
  105.     ebegin "Setting hardware clock using the system clock [${TBLURB}]"
  106.     if [[ ${fakeit} -eq 1 ]] ; then
  107.         ret=0
  108.  
  109.     elif [[ -x /sbin/hwclock ]] ; then
  110.         errstr=$(/sbin/hwclock --systohc ${myopts} 2>&1 >/dev/null)
  111.  
  112.         if [[ -n ${errstr} ]] ; then
  113.             ret=1
  114.         else
  115.             ret=0
  116.         fi
  117.         errstr="Failed to sync clocks"
  118.     else
  119.         ret=1
  120.         errstr="/sbin/hwclock not found"
  121.     fi
  122.     eend ${ret} "${errstr}"
  123. }
  124.  
  125. save() {
  126.     CLOCK_SYSTOHC="yes"
  127.     stop
  128. }
  129.  
  130.  
  131. # vim:ts=4
  132.